package com.agentframework.core.annotation;

import com.agentframework.core.tools.AgentTool;

import java.lang.annotation.*;

/**
 * 标记一个类为 Agent 组件
 * 用于自动注册到 Spring 容器中，并指定其作用域和关联的 Action
 *
 * @author wangjun
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Agent {

    /**
     * Agent 的名称，默认为空
     */
    String name() default "";

    /**
     * Agent 的作用域
     */
    Scope scope() default Scope.SINGLETON;

    /**
     * 指定这个 Agent 可以使用的 Action 类型
     */
    Class<? extends com.agentframework.core.action.Action>[] actions() default {};

    /**
     * 指定这个 agent 可以使用的工具类 tools
     */
    Class<? extends AgentTool>[] tools() default {};

    /**
     * Agent 的作用域枚举
     */
    enum Scope {

        /**
         * 单例模式，整个容器中只有一个实例
         */
        SINGLETON,
        
        /**
         * 原型模式，每次注入时创建新实例
         */
        PROTOTYPE

    }

} 